<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Menu_lst( $this );

	class Menu_lst extends Lst
	{
	function Menu_lst( &$oModule )
		{
			$this->Lst( $oModule );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Ruta', 'Submenu' );
					break;				
				case 'L':
					$this->aShowColumns = array( 'bEstrella' , 'ncRotulo', 'Ruta', 'Codigo', 'Nombre' );
					if ( $this->aFields['ncMenuPadre'] ) $this->aShowColumns[] = 'nOrden';
					break;
				case 'T':
				case 'H':
					$this->aShowColumns = array( 'bEstrella' , 'ncRotulo', 'Nombre');
					break;
			}
		}
	function initialize()
		{
			$nqItems = $this->oDatabase->getData("SELECT COUNT(*) FROM gtMenu WHERE cCamino is null AND ncMenuPadre is not null");
			if ( $nqItems > 0 )
				armarCaminos( $this->oDatabase );
				
			$this->oFiltro = $this->oModule->loadClass( 'Menu_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			if ( $this->aFields[ncMenuPadre] ) unset($this->aFields[ncMenu] );
			$this->setTitle ( "Menu" );
			$this->setSummary( "Esta tabla contiene el listado de Menues" );
			$this->addColumn ( 'Codigo', 'ncMenu', true );
			$this->addColumnOrder ( 'nOrden', MODIFICAR_ORDER_MENU, 'ncMenu,ncMenuPadre', 'nOrden' );
			$this->addColumnMultilanguage ( 'Nombre', 'cdMenu', 'es' );
			$this->aFields['aRotulo'] = is_array( getParam( 'aRotulo' ) )  ? implode(",", getParam( 'aRotulo' ) ): getParam( 'aRotulo' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_MENUS, 'ncMenu', 'gtMenuRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM gtRotuloMenu' ) );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_MENU, 'ncMenu', 'bEstrella' );			
			$this->addColumn ( 'Submenu', '', true );
			$this->addColumn ( 'Ruta', '', true );
			$this->addColumn ( 'Descripcion', 'cDescripcion', true );
			$this->setColumnAction ( 'Nombre', VER_MENU, 'ncMenu' );
			$this->oPaging->setDefaultOrderBy( 'Men.ncMenuPadre,Men.nOrden' , true);
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'KeyTree':
				case 'KeyLookUp':
					$cReturn = $aRow['ncMenu'];
					break;
				case 'DescriptionLookUp':
					$cReturn =  $aRow['cdMenu'] ;
					break;
				break;
				case 'Submenu':
					$aMenu = $this->oDatabase->getKeyArray('SELECT ncMenu, cdMenu FROM gtMenu WHERE ncMenuPadre = ' . $aRow[ncMenu] );
					foreach( $aMenu  as $ncMenu => $cdMenu )
						$cReturn .= " > " . $this->oModule->makeAction( extractLanguage( $cdMenu , 'es') , MODIFICAR_MENU, "ncMenu=$ncMenu"  ) ;
					$cReturn .= " > " . $this->oModule->makeAction( 'nuevo', AGREGAR_MENU, "ncMenuPadre="  . $aRow[ncMenu] ) ;
					break;
				case 'Ruta':
					$cReturn = $this->obtenerRutaMenu($aRow['ncMenu']) ;
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function obtenerRutaMenu( $ncMenu )
		{
			for ( $cReturn  = "" ; $ncMenu != '' ; $ncMenu = $ncMenuPadre )
			{
				$cSql = "SELECT ncMenu, ncMenuPadre, cdMenu  FROM gtMenu  WHERE ncMenu = $ncMenu";
				list ( $ncMenu, $ncMenuPadre, $cdMenu ) =  $this->oDatabase->getArray ( $cSql ) ;
				if ( $cdMenu ) 
				{
					$cItem = $this->oModule->makeAction( extractLanguage( $cdMenu , 'es') , MODIFICAR_MENU, "ncMenu=$ncMenu"  );
					$cReturn = $cItem . " > " . $cReturn ;
				}
			}
			return $cReturn;
		}
	function makeRowProperties( $aRow)
	{
		$aColores = array( 1 => 'green', 2 => 'white', 3 => 'red', 4 => 'black', 5 => 'yellow');
		return " style='background-color:". $aColores[$aRow['ncEstadoPublicacion']]."' " ;;
	}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT *
								FROM gtMenu as Men";
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "Men.cdMenu" );
				if ( $this->aFields[ncMenuPadre] )
					$this->oWhere->add( 'Men.ncMenuPadre', $this->aFields['ncMenuPadre']  );
				else
					$this->oWhere->addArray ( $this->oFiltro->getFilterdArray() , 'Men' );
				
				if ( $this->isTree() )
				{
					if ( $this->aFields['Men.ncMenuPadre'] = $this->getTreeKey() )
						$this->oWhere->add( 'Men.ncMenuPadre', $this->aFields['Men.ncMenuPadre']  );
					else
						$this->oWhere->addNull( 'Men.ncMenuPadre'  );
				}
				$cSql .= $this->oWhere->make();
			return $cSql;
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_MENU, $cParametroRegistro, 'I' , VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncMenu=" . $aRow["ncMenu"];
			$this->addRowAction ( MODIFICAR_MENU, $cParametroRegistro );
			$this->addRowAction ( DUPLICAR_MENU, $cParametroRegistro );
			$this->addRowAction ( ELIMINAR_MENU ,  $cParametroRegistro );
			$this->addRowAction ( REPLICAR_COMPONENTES ,  $cParametroRegistro );
			if ( $aRow[nModo] != 1)
			{
				$cLink =  ( $aRow[nModo] == 4 )  ? $aRow[cUrl] : str_replace( '/admin.php', '', URL_ROOT) . '?' . $aRow[cUrl] . '&amp;ncMenu=' . $aRow[ncMenu];
				$this->addRowLink( $cLink , '', 'Preview', $this->oModule->cUrlImages . "/ver.gif" );
			}
		}
	}
?>